 /*
Copyright 2011 Mary Suárez Machado

Este programa es de software libre: usted puede redistribuirlo y/o modificarlo según los términos de la Licencia de Gran pública de GNU como publicado por la Fundación de Software Libre, versión 3 de la Licencia, (o en su opción) cualquier versión posterior.

 Este programa es distribuido en la esperanza que será útil, pero SIN CUALQUIER GARANTÍA; sin aún la garantía implícita de VALOR COMERCIAL O SALUD PARA UN OBJETIVO PARTICULAR. Mirar la Licencia de Gran pública de GNU para más detalles.
*/

 
 /**
 *@file TablaHuffmanD.cpp
 *@brief Implementaciones de las funciones del módulo TablaHuffmanD
 *@author Mary Carmen Suarez
 *
 */

#include <iostream>
#include <cassert>
#include <TablaHuffmanD.h>

using namespace std;

TablaHuffmanD :: TablaHuffmanD()
{
	nbits=5;
	for (int i=0; i<32; i++)
	{
		simbolo[i]=i;
		codificacion[i]=VectorBits(i,nbits);
		codificacion[i].Invertir();
	}
}

TablaHuffmanD :: ~TablaHuffmanD()
{ }

void TablaHuffmanD :: Escribir()const
{
	for (int i=0; i<32; i++)
		cout <<simbolo[i]<<"---"<<nbits<<"-----"<<codificacion[i]<<endl;	
}

const VectorBits& TablaHuffmanD :: GetCodificacion (int d) const
{
	assert(d>=0 && d<32);
	return codificacion[d];
}

int TablaHuffmanD :: GetSimbolo (const VectorBits & v)
{
	for (int i=0; i<32; i++)
		if ( v == codificacion[i] )
			return simbolo[i];
	return 0; //Aqui nunca llega
}
